import numpy as np

'''
    1.计算平均汽温， 最高气温， 最低气温
    2.找出超过30度的天数
'''
n1 = np.array([28,30,29,31,32,30,29])
# 平均气温
print(np.mean(n1))
# 最高气温
print(np.max(n1))
# 最低气温
print(np.min(n1))
# 超过30度的天数
t= np.where(n1 > 30, 1,0)
print(np.count_nonzero(t))
print(np.sum(t))
print(len(n1[n1>30]),'===大于30度的天数')

print('-----'*80)
'''
    [85,90,78,92,88]
    平均分，中位数，标准差
    将成绩转换为十分
'''

n2 = np.array([85,90,78,92,88])
print(np.mean(n2),'==平均值')
print(np.median(n2),'中位数')
print('%.3f'%np.std(n2),'标准差,保留三位小数')
print(n2/10)
print(np.where(n2!=0,n2/10,''))


print('-----'*80)
'''
    矩阵运算  a=[[1,2],[3,4]]  b=[[5,6],[7,8]]
    计算a+b。a*b 逐元素计算
    计算矩阵 a b 的乘法(点积）
'''
a=np.array([[1,2],[3,4]])
b=np.array([[5,6],[7,8]])

print(a+b, '元素相加')
print(a*b, '<元素相乘>')
print(a@b, '点积')
print(np.dot(a,b), '<点积>')

print('----'*80)
'''
    生成一个（3，4）的数组，范围为【0-10】
    计算，每一列的最大值，每一行的最小值
    将数组中的所有奇数替换为-1
'''
np.random.seed(10)
n4 = np.random.randint(0,10,(3,4))
print(n4,'===数组生成')
# 每一列的最大值
print(np.max(n4,0),'<每一列的最大值>')
print(np.max(n4,1),'<每一行的最大值>')

# 每一行的最小值
print(np.min(n4,1),'<每一行的最小值>')
print(np.min(n4,0),'<每一列的最小值>')

print(np.where(n4%2 !=0,-1,n4),'===奇数变为-1')
n4[n4%2 == 1] = -1
print(n4,'===<与用where效果一样>')

print('----'*80)
'''
    创建一个1-12的一维数组，并转换为（3，4）的二维数组
    计算每行的和，与每列的平均值
    将数组展平为一维数组
'''
n5 = np.array(np.linspace(1,12,12, dtype=int))
print(n5,'===<创建数组>')
# print(np.sum(n5,1))
n6 =np.reshape(n5,(3,4))
print(n6)
print(np.sum(n6,1),'--sum')
print(np.mean(n6,0,int),'--mean')
print(np.reshape(n6,(12)))


print('-----'*80)
'''
    生成一个（5，5）的数组，范围是：0-20
    找出数组中大于10的元素
    将所有大于10的元素替换为 0
'''
np.random.seed(10)
n7 = np.random.randint(0,20,(5,5))
print(n7,'===<生成形状>')
print(np.where(n7<10,n7,0))
n7[n7>10] = 0
print(n7,'===<将大于10的替换为0>')


print('-----'*80)
'''
    销售额 [120,135,110,125,130,140]
    计算销售额的总和，均值和方差
    找出销售额的最高月份，最低月份
'''
n8 = np.array([120,135,110,125,130,140])
print(np.sum(n8),'===总和')
print(np.mean(n8),'--均值')
print(np.var(n8),'<方差>')
print(np.argmax(n8),'==最高')
print(np.argmin(n8),'<最低>')

print('-----'*80)
'''
    A = [1,2,3] B=[4,5,6]
    将两个数组水平拼接成一个新数组
    将两个数组垂直拼接成一个新数组
'''
n9 = np.array([1,2,3])
n10 = np.array([4,5,6])

n11 = np.concatenate((n9,n10))
print(n11,'===<UNK>')
print(np.reshape(n11,(2,3)),'===<UNK>')
print(np.reshape(n11,(3,2)),'===<UNK>')

print('----'*80)
'''
    唯一值，排序
    【2，1，2，3，1，4，3】
    找出组中唯一值并排序
    计算每个唯一值出现的次数
'''
n12 = np.array([2,1,2,3,1,4,3])
print(np.unique(n12),'===<去重>')
n13,count,index =np.unique(n12,return_counts=True,return_index=True)
print(count,'===<>',n13,'===',index)
print('----'*80)
'''
    销售额 [20,25,22,30,28]
    成本：[15,18,16,22,20]
    计算每天的利润
    计算利润的平均值和标准差
    找出利润最高的天数
'''
n14 = np.array([20,25,22,30,28])
n15= np.array([15,18,16,22,20])
# 计算利润
n16 = n14 -n15
print(n16,'===<每天的利润>')
print(np.mean(n16),'===<>')
print(np.std(n16),'===<标准差')
print(np.max(n16),'===<<UNK>')
print(len(n16[n16 == np.max(n16)]))
